perm filename A49.TEX[106,RWF]1 blob
sn#790305 filedate 1985-03-25 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 \rm
C00005 ENDMK
C⊗;
\rm
\magnification=\magstep2
\def \ip#1{\par\penalty-1000\noindent\hangindent20pt\hangafter1
\hbox to 20pt{#1\hfill}\ignorespaces}
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}
\line{\sevenrm A49.tex[106,rwf] \today\hfill}
\vskip .25in
\noindent
Problem-Solving Principles
\vskip .125in
When a programming problem seems too hard to make progress on, here are some
standard paradigms $\lbrack$ Polya $\rbrack$ for getting started:
\ip{(1)}
Is there a special case which is easier than the general problem, for which a
solution would help with the general problem?
Example: I want a formula for the area of a polygon, given the coordinates of
its vertices. If I can solve the problem for triangles, I may be able to cut
all other polygons into triangles.
\ip{(2)}
Is there some more general problem I should be looking at, with my original
problem as a special case?
Example: I am trying to design an algorithm to compute $A↑B$, for $O≤B$ an
integer. A more general problem is to compute $A↑B\times C$.
By setting $C=1$, an algorithm for the general problem solves the more
specialized one. The more general problem suggests the operations
$B:=B-1;\; C:=C*A.$
\noindent
and (when B is even)
$B:=B\;DIV\; 2;\; A:=A*A.$
\vfil\end